home *** CD-ROM | disk | FTP | other *** search
/ SPACE 2 / SPACE - Library 2 - Volume 1.iso / games / 73 / pascal / scrnsave.pas < prev   
Pascal/Delphi Source File  |  1986-11-21  |  2KB  |  67 lines

  1. {
  2.  
  3.         Program to demonstrate the method for saving the display to a
  4.         buffer, then restoring it later.
  5.  
  6.         10/28/86 MJC
  7.  
  8.         Use this in any way you like, but we can't guarantee this programs
  9.         fitness for any particular purpose.  Have fun!
  10.  
  11. }
  12.  
  13. PROGRAM Scrnsave;
  14.  
  15. TYPE
  16.  
  17.    Screen = PACKED ARRAY [ 1..32000 ] of BYTE;
  18.    S_Ptr = ^Screen;     { pointer to screen data }
  19.  
  20.  
  21. VAR
  22.  
  23.    Scn_buf : Screen;    { a place to stash the screen }
  24.    Scn_ptr : S_Ptr;     { a pointer to screen }
  25.  
  26.  
  27. FUNCTION Physbase : S_Ptr;    { xbios routine returns address of screen }
  28.   Xbios( 2 );
  29.  
  30.  
  31. PROCEDURE Sav_scn;              { proc saves screen to buf }
  32. {$P-}           { turn pointer checking off }
  33.  
  34.    begin
  35.       Scn_ptr := Physbase;      { get addr of screen in memory }
  36.       Scn_buf := Scn_Ptr^;      { do assignment, copy entire array }
  37.    end;
  38.  
  39. {$P=}           { restore pointer checking to old state }
  40.  
  41.  
  42. PROCEDURE Rest_scn;             { restore screen from buf }
  43. {$P-}           { turn pointer checking off }
  44.  
  45.    begin
  46.       Scn_ptr := Physbase;      { get addr of screen in memory }
  47.       Scn_ptr^ := Scn_buf;      { assign, copy array }
  48.    end;
  49.  
  50. {$P=}           { set pointer checking to old state }
  51.  
  52. BEGIN
  53.    Writeln( 'This is a test - Press RETURN' );
  54.    Readln;
  55.    Sav_scn;
  56.    Writeln( 'Screen has been saved' );
  57.    Writeln;
  58.    Writeln;
  59.    Writeln( 'Press RETURN' );
  60.    Readln;
  61.    Rest_scn;
  62.    Writeln( ' Screen was just restored - PRESS RETURN ' );
  63.    Readln;
  64. END.
  65.  
  66. { END OF FILE: SCNSAVE.PAS }
  67.